/**
 * @file dblabel.c
 * @brief Fichier source du module dblabel.
 *
 * @author Rachid Delory, Mamadou Keita, Florian Bernard
 */

/* *********************************************************************

                       Librairies de label

********************************************************************* */

#include "dblabel.h"

/* *********************************************************************

                        Fonctions

********************************************************************* */
void recuperation_DLab(Label **label, const int id)
{
  DataBase data;
  ouvrir_Db();
  /* Récupération de ceux qui ont comme père id */
  prepare_Db(&data, "select libelle from label where rowid = ?");
  bindValueInt_Db(&data, 1, id);
      
  while(execute_Db(&data))
    {
      if((*label) == NULL)
	(*label) = creer_Lab();
      setLibelle_Lab((*label), getValueText_Db(&data, 0));
      setId_Lab((*label), id);
    }
  finalise_Db(&data);
}

void insertion_DLab(Label *label)
{
  if(label)
    {
      DataBase data;
      if(getSup_Lab(label) == 1)
	{
	  suppression_DLab(getId_Lab(label));
	  return;
	}
      if(getId_Lab(label) == 0)
	{
	  prepare_Db(&data, "insert into label (libelle) values (?)");
	  bindValueText_Db(&data, 1, getLibelle_Lab(label));
	}
      else
	{
	  if(getMaj_Lab(label) == 1)
	    {
	      prepare_Db(&data, "update label set libelle = ? where rowid = ?");
	      bindValueInt_Db(&data, 2, getId_Lab(label));
	    }
	}
      if(getMaj_Lab(label) == 1 || getId_Lab(label) == 0)
	{
	  bindValueText_Db(&data,1,getLibelle_Lab(label));
	  if(execute_Db(&data))
	    {
	      
	    }
	  finalise_Db(&data);
	}
      if(getId_Lab(label) == 0)
	{
	  prepare_Db(&data, "select max(rowid) from label");
	  if(execute_Db(&data))
	    {
	      setId_Lab(label, getValueInt_Db(&data, 0));
	    }
	  finalise_Db(&data);
	}
    }
}

void suppression_DLab(const int id)
{
  if(id > 0)
    {
      DataBase data;
      ouvrir_Db();
      
      prepare_Db(&data, "delete from Label where rowid = ?");
      bindValueInt_Db(&data, 1, id);
      if (execute_Db(&data))
        {
	  
        }
      finalise_Db(&data);
      prepare_Db(&data, "update oeuvre set id_label = 0 where id_label = ?");
      bindValueInt_Db(&data, 1, id);
      if(execute_Db(&data))
	{

	}
      finalise_Db(&data);
    }
}
